#!/usr/bin/env node

/**
 * VOTS i18n 批量处理脚本
 * 用于快速处理剩余页面的国际化迁移
 */

const fs = require('fs');
const path = require('path');

// 需要处理的页面列表
const pagesToProcess = [
  {
    name: '参数设置',
    path: 'vots-ui/src/views/system/config/index.vue',
    keys: ['config']
  },
  {
    name: '通知公告',
    path: 'vots-ui/src/views/system/notice/index.vue',
    keys: ['notice']
  },
  {
    name: '字典数据',
    path: 'vots-ui/src/views/system/dict/data.vue',
    keys: ['dict']
  },
  {
    name: '操作日志',
    path: 'vots-ui/src/views/monitor/operlog/index.vue',
    keys: ['log']
  },
  {
    name: '登录日志',
    path: 'vots-ui/src/views/monitor/logininfor/index.vue',
    keys: ['log']
  },
  {
    name: '在线用户',
    path: 'vots-ui/src/views/monitor/online/index.vue',
    keys: ['online']
  },
  {
    name: '定时任务',
    path: 'vots-ui/src/views/monitor/job/index.vue',
    keys: ['job']
  },
  {
    name: '数据监控',
    path: 'vots-ui/src/views/monitor/druid/index.vue',
    keys: ['monitoring']
  },
  {
    name: '服务监控',
    path: 'vots-ui/src/views/monitor/server/index.vue',
    keys: ['monitoring']
  },
  {
    name: '缓存监控',
    path: 'vots-ui/src/views/monitor/cache/index.vue',
    keys: ['monitoring']
  },
  {
    name: '代码生成',
    path: 'vots-ui/src/views/tool/gen/index.vue',
    keys: ['tools']
  },
  {
    name: '系统接口',
    path: 'vots-ui/src/views/tool/swagger/index.vue',
    keys: ['tools']
  }
];

// 常见的中文文本映射
const commonTextMappings = {
  // 表格相关
  '搜索': '$t(\'table.search\')',
  '重置': '$t(\'table.reset\')',
  '新增': '$t(\'table.add\')',
  '修改': '$t(\'table.edit\')',
  '删除': '$t(\'table.delete\')',
  '导出': '$t(\'table.export\')',
  '导入': '$t(\'table.import\')',
  '操作': '$t(\'table.actions\')',
  '状态': '$t(\'table.status\')',
  '创建时间': '$t(\'table.createTime\')',
  '更新时间': '$t(\'table.updateTime\')',
  '确 定': '$t(\'table.confirm\')',
  '取 消': '$t(\'table.cancel\')',
  
  // 表单相关
  '请输入': 'placeholder="$t(\'',
  '请选择': 'placeholder="$t(\'',
  '备注': '$t(\'user.remark\')',
  '备注不能为空': '$t(\'user.remarkRequired\')',
  
  // 通用
  '开始日期': '$t(\'common.startDate\')',
  '结束日期': '$t(\'common.endDate\')',
  '更多': '$t(\'common.more\')',
  '是': '$t(\'common.yes\')',
  '否': '$t(\'common.no\')',
  
  // 用户相关
  '用户名称': '$t(\'user.userName\')',
  '用户昵称': '$t(\'user.nickname\')',
  '手机号码': '$t(\'user.phone\')',
  '邮箱': '$t(\'user.email\')',
  '用户密码': '$t(\'user.password\')',
  '用户性别': '$t(\'user.sex\')',
  '部门': '$t(\'user.dept\')',
  '岗位': '$t(\'user.post\')',
  '角色': '$t(\'user.role\')',
  
  // 角色相关
  '角色名称': '$t(\'role.name\')',
  '权限字符': '$t(\'role.key\')',
  '显示顺序': '$t(\'role.sort\')',
  '数据权限': '$t(\'role.dataScope\')',
  '分配用户': '$t(\'role.assignUser\')',
  '展开/折叠': '$t(\'role.expandCollapse\')',
  
  // 菜单相关
  '菜单名称': '$t(\'menu.name\')',
  '菜单图标': '$t(\'menu.icon\')',
  '菜单类型': '$t(\'menu.type\')',
  '上级菜单': '$t(\'menu.parent\')',
  '路由地址': '$t(\'menu.path\')',
  '组件路径': '$t(\'menu.component\')',
  '权限标识': '$t(\'menu.permission\')',
  
  // 部门相关
  '部门名称': '$t(\'dept.name\')',
  '上级部门': '$t(\'dept.parent\')',
  '负责人': '$t(\'dept.leader\')',
  '联系电话': '$t(\'dept.phone\')',
  
  // 岗位相关
  '岗位名称': '$t(\'post.name\')',
  '岗位编码': '$t(\'post.code\')',
  '岗位排序': '$t(\'post.sort\')',
  
  // 字典相关
  '字典名称': '$t(\'dict.name\')',
  '字典类型': '$t(\'dict.type\')',
  '字典编号': '$t(\'dict.dictId\')',
  '刷新缓存': '$t(\'dict.refreshCache\')'
};

// 处理单个文件
function processFile(filePath) {
  if (!fs.existsSync(filePath)) {
    console.log(`❌ 文件不存在: ${filePath}`);
    return false;
  }
  
  let content = fs.readFileSync(filePath, 'utf8');
  let modified = false;
  
  // 处理常见的中文文本
  for (const [chinese, translation] of Object.entries(commonTextMappings)) {
    if (content.includes(chinese)) {
      // 处理 label 属性
      content = content.replace(
        new RegExp(`label="${chinese}"`, 'g'),
        `:label="${translation}"`
      );
      
      // 处理 placeholder 属性
      if (translation.startsWith('placeholder=')) {
        const key = translation.replace('placeholder="$t(\'', '').replace('\')', '');
        content = content.replace(
          new RegExp(`placeholder="${chinese}"`, 'g'),
          `:placeholder="$t('${key}')"`
        );
      }
      
      // 处理按钮文本
      content = content.replace(
        new RegExp(`>${chinese}</`, 'g'),
        `>{{ ${translation} }}</`
      );
      
      modified = true;
    }
  }
  
  if (modified) {
    fs.writeFileSync(filePath, content, 'utf8');
    console.log(`✅ 已处理: ${filePath}`);
    return true;
  } else {
    console.log(`⏭️  无需处理: ${filePath}`);
    return false;
  }
}

// 主函数
function main() {
  console.log('🚀 开始批量处理 i18n 迁移...\n');
  
  let processedCount = 0;
  let totalCount = pagesToProcess.length;
  
  for (const page of pagesToProcess) {
    console.log(`📝 处理页面: ${page.name}`);
    if (processFile(page.path)) {
      processedCount++;
    }
    console.log('');
  }
  
  console.log(`📊 处理完成! 共处理 ${processedCount}/${totalCount} 个文件`);
  console.log('\n📋 下一步操作:');
  console.log('1. 检查处理后的文件，确保翻译键正确');
  console.log('2. 在语言包中添加缺失的翻译键');
  console.log('3. 测试语言切换功能');
  console.log('4. 处理特殊的中文文本（如提示信息、错误信息等）');
}

// 运行脚本
if (require.main === module) {
  main();
}

module.exports = {
  processFile,
  commonTextMappings,
  pagesToProcess
}; 